package me.sdevil507.org.service;

import me.sdevil507.biz.common.exceptions.DeptCodeExistedException;
import me.sdevil507.biz.common.exceptions.DeptTitleExistedException;
import me.sdevil507.org.dto.OrgDeptParamsDto;
import me.sdevil507.org.po.OrgDeptPo;
import me.sdevil507.supports.jpa.PageParamsDTO;
import me.sdevil507.supports.jpa.SortParamsDTO;
import org.springframework.data.domain.Page;

import java.util.List;

/**
 * 机构部门表[OrgDeptService]
 *
 * @author sdevil507
 * created on 2020-06-24 14:31:01
 */
public interface OrgDeptService {


    List<OrgDeptPo> readAll(OrgDeptParamsDto searchParamsDto);
    /**
     * 查询全部记录
     *
     * @param searchParamsDto 搜索dto
     * @param pageParamsDto   分页dto
     * @param sortParamsDto   排序dto
     * @return 记录列表
     */
    Page<OrgDeptPo> readAllByPage(OrgDeptParamsDto searchParamsDto, PageParamsDTO pageParamsDto, SortParamsDTO sortParamsDto);

    /**
     * 创建记录
     *
     * @param dto 传输类
     */
    void create(OrgDeptParamsDto dto) throws DeptTitleExistedException, DeptCodeExistedException;

    /**
     * 更新记录
     *
     * @param dto 传输类
     */
    void update(OrgDeptParamsDto dto) throws DeptTitleExistedException, DeptCodeExistedException;

    /**
     * 删除记录
     *
     * @param dto 传输类
     */
    void delete(OrgDeptParamsDto dto);

    OrgDeptPo getByOrgId(Long id);

    OrgDeptPo getOne(Long deptId);

    OrgDeptPo getByOrgName(String orgName);
}